// 使用enum关键字定义枚举
enum UserResponse {
    No,
    Yes,
  }

//   语法：
         /*
            enum 枚举名 {
                属性名 = 属性值,
                属性名 = 属性值
            }
         */
//    枚举类型声明后，做了两件事
        // 1、创建了一个js的同名对象，是一个值，并且把枚举的值作为这个对象的属性
        // 2、本身又是一个类型，可以限制变量的值的取值范围，只能取同名对象的属性值
  function respond(recipient: string, message: UserResponse): void {
    // ...
    console.log(message);
    
  }
   
  respond("Princess Caroline", UserResponse.No);


//   数字枚举
        // 定义枚举的时候，可以给枚举的对象属性设置值，这个值就叫做枚举初始值
            // 不设置枚举初始值
                    // 第一个属性的值默认为0
                    // 第二个属性的值默认为1
                    enum No {
                        Up ,
                        Down,
                        Left,
                        Right,
                      }
            // 只设置部分枚举初始值
            enum Direction {
                Up =-2,
                Down,
                Left = -1,
                Right,
              }
                // 设置了值的项的值就是你设置的值，未设值的项的值是从设了值的项递增，如果第一项没设置值，第一项值为0
            // 所有初始值都设置
            //   就取设置的值
              function getSomeValue (){
                  return 1
              }
            // enum E {
            //     A = getSomeValue(),
            //     B,
            //   }

            // 未设值值的枚举成员，它的前一项必须设置值，且值为数字
  export {}